
[dbo].[asi_UserTokenUpdate]
CREATE procedure [dbo].[asi_UserTokenUpdate]
@userKey uniqueidentifier As
declare @EveryoneRoleKey uniqueidentifier
select @EveryoneRoleKey = ParameterValue from SystemConfig
where ParameterName = 'Security.Token.EveryoneRoleKey'
CREATE TABLE #token (Grantee uniqueidentifier null, RoleName nvarchar(65))
INSERT #token(Grantee, RoleName)
VALUES (@userKey, '')
INSERT #token(Grantee, RoleName)
VALUES (@EveryoneRoleKey, 'Everyone')
INSERT #token(Grantee, RoleName)
SELECT UserRole.RoleKey, RoleMain.Name
FROM UserRole
INNER JOIN RoleMain ON UserRole.[RoleKey] = RoleMain.[RoleKey]
WHERE UserRole.UserKey = @userKey
AND UserRole.RoleKey <> @EveryoneRoleKey
INSERT #token(Grantee, RoleName)
SELECT GroupKey, [Name]
FROM GroupMain
WHERE GroupKey IN (
SELECT DISTINCT GroupKey
FROM GroupMember
WHERE MemberContactKey = @userKey
AND (JoinDate <= getdate() OR JoinDate IS NULL)
AND (DropDate >= getdate() OR DropDate IS NULL)
)
INSERT #token(Grantee, RoleName)
SELECT newid(), SecurityGroup
FROM vBoCsWebUser a, UserMain b
WHERE a.ID = b.ContactMaster
AND b.UserKey = @userKey
AND LEN(LTRIM(RTRIM(SecurityGroup))) > 0
INSERT #token(Grantee, RoleName)
SELECT newid(), MemberType
FROM vBoCsContact a, UserMain b
WHERE a.ID = b.ContactMaster
AND b.UserKey = @userKey
AND LEN(LTRIM(RTRIM(MemberType))) > 0
DECLARE @MemberGroupKey uniqueidentifier,
@GroupName nvarchar(65)
SELECT @MemberGroupKey = ParameterValue
FROM SystemConfig
WHERE ParameterName = 'CM.MemberGroupKey'
SELECT @GroupName = Name FROM GroupMain WHERE GroupKey = @MemberGroupKey
INSERT #token(Grantee, RoleName)
SELECT @MemberGroupKey, @GroupName
FROM vBoCsContact a, vBoCsMemberType b, UserMain c
WHERE a.MemberType = b.MemberType
AND a.ID = c.ContactMaster
AND b.IsMember = 1
AND c.UserKey = @userKey
DELETE UserToken
WHERE UserKey = @userKey
AND NOT EXISTS(
SELECT 1
FROM #token
WHERE Grantee = UserToken.Grantee)
INSERT UserToken(UserKey, Grantee, RoleName)
SELECT @userKey, Grantee, RoleName
FROM #token
WHERE NOT EXISTS(
SELECT 1
FROM UserToken
WHERE UserKey = @userKey
AND Grantee = #token.Grantee)
SELECT Grantee, RoleName
FROM #token
DROP TABLE #token
GO